package com.sjj.cp.client;


import java.util.ArrayList;
import java.util.List;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Button;
import com.sjj.cp.client.server.FormulaService;
import com.sjj.cp.shared.FormulaListado;
import com.google.gwt.user.client.ui.FlexTable;

//Esta clase es unica y exclusivamente para agregar formulas si se necesita
//NO esta implementada

public class AgregarFormula extends Composite {
	
	ListaFormula lista;
	
	public AgregarFormula() {
		
		VerticalPanel verticalPanel = new VerticalPanel();
		initWidget(verticalPanel);
		
		HorizontalPanel horizontalPanel_5 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_5);
		
		Label lblPaciente = new Label("Cedula Paciente:");
		horizontalPanel_5.add(lblPaciente);
		
		final TextBox txtPaciente = new TextBox();
		txtPaciente.setMaxLength(15);
		horizontalPanel_5.add(txtPaciente);
		
		HorizontalPanel horizontalPanel_11 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_11);
		
		Label lblCedulaFarmaceuta = new Label("Cedula Farmaceuta");
		horizontalPanel_11.add(lblCedulaFarmaceuta);
		
		final TextBox txtFarmaceuta = new TextBox();
		txtFarmaceuta.setMaxLength(15);
		horizontalPanel_11.add(txtFarmaceuta);
		
		HorizontalPanel horizontalPanel = new HorizontalPanel();
		verticalPanel.add(horizontalPanel);
		
		Label lblId = new Label("Codigo:");
		horizontalPanel.add(lblId);
		
		final TextBox txtId = new TextBox();
		txtId.setMaxLength(15);
		horizontalPanel.add(txtId);
		
		HorizontalPanel horizontalPanel_1 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_1);
		
		Label lblFecha = new Label("Fecha Expedicion");
		horizontalPanel_1.add(lblFecha);
		
		final TextBox txtFechaExp = new TextBox();
		txtFechaExp.setMaxLength(30);
		horizontalPanel_1.add(txtFechaExp);
		
		HorizontalPanel horizontalPanel_2 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_2);
		
		Label lblEstado = new Label("Estado:");
		horizontalPanel_2.add(lblEstado);
		
		final TextBox txtEstado = new TextBox();
		txtEstado.setMaxLength(30);
		horizontalPanel_2.add(txtEstado);
		
		HorizontalPanel horizontalPanel_3 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_3);
		
		Label lblFechaVencimiento = new Label("Fecha de Vencimiento: ");
		horizontalPanel_3.add(lblFechaVencimiento);
		
		HorizontalPanel horizontalPanel_6 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_6);
		
		Label lbl = new Label("Fecha de entrega");
		horizontalPanel_6.add(lbl);
		
		final TextBox txtFechaEntr = new TextBox();
		txtFechaEntr.setMaxLength(120);
		horizontalPanel_6.add(txtFechaEntr);
		
		HorizontalPanel horizontalPanel_7 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_7);
		
		Label lblCiudad = new Label("Ciudad: ");
		horizontalPanel_7.add(lblCiudad);
		
		final TextBox txtCiudad = new TextBox();
		txtCiudad.setMaxLength(120);
		horizontalPanel_7.add(txtCiudad);
		
		HorizontalPanel horizontalPanel_8 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_8);
		
		Label lblDiagnostico = new Label("Diagnostico:");
		horizontalPanel_8.add(lblDiagnostico);
		
		final TextBox txtDiagnostico = new TextBox();
		txtDiagnostico.setMaxLength(120);
		horizontalPanel_8.add(txtDiagnostico);
		
		HorizontalPanel horizontalPanel_9 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_9);
		
		Label lblFinalidad = new Label("Finalidad:");
		horizontalPanel_9.add(lblFinalidad);
		
		final TextBox txtFinalidad = new TextBox();
		txtFinalidad.setMaxLength(120);
		horizontalPanel_9.add(txtFinalidad);
		
		HorizontalPanel horizontalPanel_10 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_10);
		
		Label lblRecomendaciones = new Label("Recomendaciones:");
		horizontalPanel_10.add(lblRecomendaciones);
		
		final TextBox txtRecomendaciones = new TextBox();
		txtRecomendaciones.setMaxLength(120);
		horizontalPanel_10.add(txtRecomendaciones);
		
		
		final TextBox txtFechaVen = new TextBox();
		txtFechaVen.setMaxLength(120);
		horizontalPanel_3.add(txtFechaVen);
		
		final FlexTable tablaMedicamentos = new FlexTable();
		verticalPanel.add(tablaMedicamentos);
		
		Button btnMedicamentos = new Button("Agregar Medicamento");
		verticalPanel.add(btnMedicamentos);
		
		
		btnMedicamentos.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event) {
				TextBox txtMed = new TextBox();
				tablaMedicamentos.setText(tablaMedicamentos.getRowCount(), 0, "ID Medicamento "+(tablaMedicamentos.getRowCount()+1));
				tablaMedicamentos.setWidget(tablaMedicamentos.getRowCount()-1,1,txtMed);
			}			
		});
		
		
		HorizontalPanel horizontalPanel_4 = new HorizontalPanel();
		verticalPanel.add(horizontalPanel_4);
		
		Button btnAceptar = new Button("Aceptar");
		horizontalPanel_4.add(btnAceptar);
		
		Button btnCancelar = new Button("Cancelar");
		horizontalPanel_4.add(btnCancelar);
		
		
		btnCancelar.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				
				txtPaciente.setText("");
				txtFarmaceuta.setText("");
				txtId.setText("");
				txtFechaExp.setText("");
				txtEstado.setText("");
				txtFechaEntr.setText("");
				txtCiudad.setText("");
				txtDiagnostico.setText("");
				txtFinalidad.setText("");
				txtRecomendaciones.setText("");
				txtFechaVen.setText("");
				tablaMedicamentos.removeAllRows();
				
				mostrarListado();
			}
		});
		
		
		
		
		btnAceptar.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				
				if("".equals(txtPaciente.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtFarmaceuta.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtId.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtFechaExp.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtEstado.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtFechaEntr.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtCiudad.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtDiagnostico.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtFinalidad.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtRecomendaciones.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}
				if("".equals(txtFechaVen.getText())){
					Window.alert("Hay campos obligatorios que deben ser digitados");
					return;
				}

				//Guardamos una lista de los valores de medicamentos.
				List<String> medicamentos = new ArrayList<String>();
				for(int i = 0; i < tablaMedicamentos.getRowCount(); i++){
					medicamentos.add(((TextBox) tablaMedicamentos.getWidget(i, 1)).getText());
				}
				
				FormulaService.Util.getInstance().guardarCliente(
						txtPaciente.getText(),
						txtFarmaceuta.getText(),
						txtId.getText(),
						txtFechaExp.getText(),
						txtEstado.getText(),
						txtFechaEntr.getText(),
						txtCiudad.getText(),
						txtDiagnostico.getText(),
						txtFinalidad.getText(),
						txtRecomendaciones.getText(),
						txtFechaVen.getText(),
						medicamentos,
						new AsyncCallback<Void>() {
							
							@Override
							public void onSuccess(Void result) {
								Window.alert("La formula se ha guardado satisfactoriamente");							

								mostrarListado();
								
							}
							
							@Override
							public void onFailure(Throwable caught) {
								Window.alert(caught.getMessage());
							}
						});
			}
		});
		
		
	}
	
	
	public void setLista(ListaFormula lista){
		this.lista = lista;
	}
	
	private void mostrarListado(){
		
		lista.setVisible(true);
		this.setVisible(false);
	}
}
